home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
526-550
/
disk_541
/
steal
/
src
/
showscr.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
3KB
|
137 lines
/****************************************************************************
ShowScr.c
This file should be linked together with a compiled version
of Stolen.c, or whatever it's name may be. That file must
contain the following:
- A NewScreen structure: The Screen to be shown;
- A list of NewWindows: The Windows to be opened on it;
- A list of Menus: The Menu for the Window at the according index.
Rick van Rein, October 2, 1990
****************************************************************************/
#include <functions.h>
#include <Intuition/Intuition.h>
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
extern struct NewWindow *swin1 []; /* Ending in NULL */
extern struct Menu *smen1 []; /* Congruent with latter, but NULL means "no MenuStrip" */
extern struct NewScreen nscr1; /* The Screen itself */
extern short cols1 []; /* The Screen's colours */
/***** This routine opens a Window with a Close-Gadget in it: */
#define BLUE_0 0
#define WHITE_1 1
#define BLACK_2 2
#define ORANGE_3 3
struct NewWindow closewin =
{
30,30, /* LeftEdge,TopEdge */
360,10, /* Width,Height */
BLUE_0,WHITE_1, /* DetailPen,BlockPen */
CLOSEWINDOW, /* IDCMPFlags */
WINDOWDRAG | WINDOWDEPTH | WINDOWCLOSE | SMART_REFRESH,
/* Flags */
NULL, /* FirstGadget */
NULL, /* CheckMark */
(UBYTE *) " <<< Click here to finish ShowScr ",
/* Title */
NULL, /* Screen */
NULL, /* BitMap */
-1,-1, /* MinWidth,MinHeight */
-1,-1, /* MaxWidth,MaxHeight */
WBENCHSCREEN /* Type */
};
void WaitForClick ()
{
struct Window *win;
if (win=OpenWindow (&closewin))
{
WaitPort (win->UserPort);
ReplyMsg (GetMsg (win->UserPort)); /* Our Gadget was Clicked */
CloseWindow (win);
}
else
puts ("\tShowScr: Can't open Window on Workbench Screen");
}
/***** The main routine of the showing mechanism: */
main ()
{
struct Screen *scr;
struct NewWindow **wp;
struct Window *win,*next;
struct Menu **mp;
int ok;
if (!(IntuitionBase=(struct IntuitionBase *) OpenLibrary ("intuition.library",0L)))
{
puts ("\tShowScr: Can't open intuition.library (?)");
exit (0);
}
if (!(GfxBase=(void *) OpenLibrary ("graphics.library",0L)))
{
puts ("\tShowScr: Can't open graphics.library (?)");
exit (0);
}
scr=OpenScreen (&nscr1);
if (!scr)
{
puts ("\tShowScr: Can't open Screen as defined by scr1");
exit (0);
}
LoadRGB4 (&scr->ViewPort,cols1,1L << nscr1.Depth);
wp=swin1;
mp=smen1;
ok=1;
while (ok && *wp)
{
(*wp)->Screen=scr;
(*wp)->Type=CUSTOMSCREEN;
win=OpenWindow (*wp);
if ((ok=(win!=NULL)) && *mp)
SetMenuStrip (win,*mp);
wp++;
mp++;
}
if (ok)
WaitForClick ();
else
puts ("\tShowScr: Not all Windows as described in swin1 could be opened");
win=scr->FirstWindow;
while (win)
{
next=win->NextWindow;
CloseWindow (win);
win=next;
}
CloseScreen (scr);
CloseLibrary (GfxBase);
CloseLibrary (IntuitionBase);
}